import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
// 1. 导入包
import createPersistedState from 'vuex-persistedstate'
Vue.use(Vuex)

export default new Vuex.Store({
  // 2. 配置为 vuex 的插件
  plugins: [createPersistedState()],
  state: {
    token: '',
    // 定义用户信息对象
    userInfo: { }
  },
  // 5.接收存储数据
  getters: {
  },
  // 唯一同步更新数据的地方
  mutations: {
    //核心配置项
    //更新保存token
    //定义更新token的函数
    updateToken(state, newToken){
    state.token = newToken
    },
    // 4.定义更新userInfo的函数
    updateUserInfo(state, info){
      state.userInfo = info
    }
  },
  // 实现异步更新的地方
  actions: {
    //发送请求用户信息数据
    async initUserInfo(context){
      // context store仓库实例对象
      // 2.发请求, 获取数据
    const {data :{data: res}} = await axios.get('/my/userinfo')
    console.log(res)
    // 3. 调用mutations中的函数 传递数据进行保存
      context.commit('updateUserInfo', res)
    }
  },
  modules: {
  }
})
